package com.ambow.shop.util;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ResourceBundle;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSource;

/**
 * JDBC工具类。
 * 
 * @author chunw
 *
 */
public class JdbcUtils {
	// 数据库驱动类类名；
	public static final String CLASS_NAME;
	// 数据库连接字符串；
	public static final String URL;
	// 数据库用户名；
	public static final String USER_NAME;
	// 数据库密码；
	public static final String USER_PASSWORD;
	// 线程存储；
	private static ThreadLocal<Connection> local;

	static {
		ResourceBundle bundle = ResourceBundle.getBundle("mysql");
		CLASS_NAME = bundle.getString("className");
		URL = bundle.getString("url");
		USER_NAME = bundle.getString("userName");
		USER_PASSWORD = bundle.getString("userPassword");
		local = new ThreadLocal<Connection>();
	}

	public static Connection getConnection() throws SQLException {
		Connection conn = local.get();
		if (conn == null || conn.isClosed()) {
			conn = getDataSource().getConnection();
			local.set(conn);
		}
		return conn;
	}

	/**
	 * 获取数据源。
	 * 
	 * @return 数据源；
	 */
	public static DataSource getDataSource() {
		// 创建数据源；
		BasicDataSource dataSource = new BasicDataSource();
		// 基础设置；
		dataSource.setDriverClassName(CLASS_NAME);
		dataSource.setUrl(URL);
		dataSource.setUsername(USER_NAME);
		dataSource.setPassword(USER_PASSWORD);
		// 高级设置；
		// 初始化连接
		dataSource.setInitialSize(5);
		// 最小空闲连接
		dataSource.setMinIdle(5);
		// 最大空闲连接
		dataSource.setMaxIdle(10);
		return dataSource;
	}

}
